package main

import (
	"fmt"
	"runtime"
	"sync"
)
var wg sync.WaitGroup //统计子进程的数量


func hello(i int)  {
	fmt.Println("hello A - ",i)
	wg.Done()//完成后，计数器减1
}
func main() {
	runtime.GOMAXPROCS(1)//只使用一个cpu核心（os线程）进行处理----参考nginx的多核心处理


	wg.Add(1000)//计数器+1

	for i:=0;i<1000;i++ {

		//go hello(i)//可能来不及打印出来就执行就结束了 ---- 起了子进程去执行新的命令----类似php中的popen---执行顺序不固定的处理

		go func(i int) {//引入了外部变量i

			fmt.Println("hello -b -",i)
			wg.Done()
		}(i)//匿名函数也可以---还是一个闭包函数，由于引入了外部变量i，所以出现了问题
	}
	//time.Sleep(time.Second * 5)//暂停1s在继续之执行
	fmt.Println("hello main")
	wg.Wait()//等所有子进程完成后进行操作----计数器为0 的时候

}